package edu.northwestern.cbits.purple_robot_manager.charts; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import android.app.Activity; import edu.northwestern.cbits.purple_robot_manager.activities.WebkitActivity; public class LineChart extends Chart { protected Map<String, List<Double>> _series = new HashMap<>(); protected List<Double> _times = new ArrayList<>(); public void addSeries(String key, List<Double> series) { this._series.put(key, series); } public void addTime(String string, ArrayList<Double> times) { this._times = times; } public JSONObject dataJson(Activity activity) throws JSONException, IOException { JSONObject chartJson = (JSONObject) new JSONTokener(WebkitActivity.stringForAsset(activity, "webkit/js/placeholder_line.js")).nextValue(); JSONArray series = chartJson.getJSONArray("series"); for (String key : this._series.keySet()) { JSONObject seriesObject = new JSONObject(); JSONArray array = new JSONArray(); List<Double> list = this._series.get(key); if (this._times.size() == 0) { for (Double d : list) { array.put(d.doubleValue()); } } else { for (int i = 0; i < list.size() && i < this._times.size(); i++) { JSONArray sample = new JSONArray(); sample.put(this._times.get(i)); sample.put(list.get(i)); array.put(sample); } } seriesObject.put("data", array); series.put(seriesObject); } return chartJson; } }